package com.fmdj.odr.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.ChannelTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;

@Configuration
public class RedisConfig {

    @Autowired
    private RedisConnectionFactory redisConnectionFactory;

    @Bean
    public ChannelTopic expiredTopic(){
        //__keyevent@5__:expired 代表 Redis 发布的一个频道名称，用于监听 Redis 5号数据库中键的过期事件
        //__keyevent@5__：指定事件类型为键事件，并且监听的是 Redis 5号数据库的事件。
        //expired：表示要监听的事件类型是键过期事件。
        return new ChannelTopic("__keyevent@5__:expired");
    }

    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer(){

        RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
        redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
        return redisMessageListenerContainer;
    }
}
